ديف أوبس

حماية مجلدات Apache بكلمة مرور

كيفية إعداد استيثاق كلمة السر مع خادوم Apache على Ubuntu

يُعد إعداد استيثاق كلمة السر أحد أكثر آليات الحماية استخدامًا على خوادم الويب لحماية الموارد والمجلدات من الوصول غير المصرح به. خادوم Apache HTTP Server، أحد أشهر الخوادم على نظام Ubuntu، يدعم هذه الآلية بشكل مباشر من خلال وحدة mod_auth_basic. يعتمد هذا النوع من المصادقة على ملف يحتوي على أسماء المستخدمين وكلمات المرور المشفرة، يتم مقارنته بكل طلب وصول للموارد المحمية.

في هذا المقال، سيتم تناول جميع خطوات إعداد استيثاق كلمة السر باستخدام Apache على نظام تشغيل Ubuntu بشكل مفصل، بدءًا من إعداد الحزم وحتى حماية المجلدات والموارد مع أمثلة عملية، وضمان الالتزام بمعايير الأمان وتوصيات الأداء.


المحتويات:

  1. نظرة عامة على استيثاق كلمة السر

  2. تثبيت Apache على Ubuntu

  3. إنشاء دليل محمي

  4. تفعيل وحدة المصادقة mod_auth_basic

  5. إنشاء ملف كلمات المرور .htpasswd

  6. إعداد ملف التهيئة Apache لحماية الدليل

  7. اختبار إعداد الاستيثاق

  8. تعزيز الأمان

  9. استكشاف الأخطاء الشائعة وحلولها

  10. الجدول: مقارنة بين أنواع الاستيثاق في Apache


1. نظرة عامة على استيثاق كلمة السر

استيثاق كلمة السر في Apache يستخدم آلية بسيطة تعتمد على المطالبة باسم مستخدم وكلمة مرور عند محاولة الوصول إلى صفحة أو مجلد معين. تعمل هذه الآلية من خلال وحدات مصادقة (Authentication Modules) أبرزها:

  • mod_auth_basic: للقيام بالاستيثاق الأساسي.

  • mod_authn_file: للتحقق من المستخدمين باستخدام ملف نصي.

ببساطة، يتم تخزين معلومات المصادقة في ملف .htpasswd، وتتم قراءة هذا الملف بواسطة خادوم Apache عند طلب الوصول إلى المسار المحمي. تُرسل بيانات الاعتماد عبر بروتوكول HTTP أو HTTPS، ويُنصح دائمًا باستخدام HTTPS لتأمين الاتصال.


2. تثبيت Apache على Ubuntu

أول خطوة هي التأكد من تثبيت خادوم Apache على نظام Ubuntu. يتم ذلك عبر تنفيذ الأوامر التالية في الطرفية:

bash
sudo apt update sudo apt install apache2 -y

بعد التثبيت، يمكن التحقق من أن الخادوم يعمل باستخدام:

bash
sudo systemctl status apache2

إن كان الخادوم يعمل، فستظهر حالة active (running).


3. إنشاء دليل محمي

لنفترض أنك تريد حماية مجلد يسمى private داخل /var/www/html. يمكن إنشاؤه بالأمر التالي:

bash
sudo mkdir /var/www/html/private echo "هذا محتوى محمي" | sudo tee /var/www/html/private/index.html

4. تفعيل وحدة المصادقة mod_auth_basic

في حالة لم تكن الوحدة مفعلة، يمكن تفعيلها بالأوامر التالية:

bash
sudo a2enmod auth_basic sudo a2enmod authn_file sudo systemctl restart apache2

5. إنشاء ملف كلمات المرور .htpasswd

لإنشاء هذا الملف، نحتاج إلى أداة htpasswd، وهي جزء من الحزمة apache2-utils. لتثبيتها:

bash
sudo apt install apache2-utils

ثم يتم إنشاء الملف وإضافة مستخدم:

bash
sudo htpasswd -c /etc/apache2/.htpasswd user1

سيُطلب منك إدخال كلمة المرور للمستخدم user1. خيار -c يُستخدم لإنشاء الملف، وعند إضافة مستخدمين لاحقين لا يتم استخدام هذا الخيار لتجنب حذف الموجودين.

لإضافة مستخدم آخر لاحقًا:

bash
sudo htpasswd /etc/apache2/.htpasswd user2

6. إعداد ملف التهيئة Apache لحماية الدليل

لحماية المجلد private، يمكن تعديل ملف إعدادات الموقع الافتراضي:

bash
sudo nano /etc/apache2/sites-available/000-default.conf

داخل الكتلة ، أضف ما يلي:

apache
AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user

ثم أعد تحميل إعدادات الخادوم:

bash
sudo systemctl reload apache2

7. اختبار إعداد الاستيثاق

افتح المتصفح وتوجه إلى:

arduino
http://your_server_ip/private/

سيتم مطالبتك بإدخال اسم المستخدم وكلمة المرور. بعد الإدخال الصحيح، سيتم عرض محتوى الصفحة index.html.


8. تعزيز الأمان

لضمان مستوى أمني مرتفع، من الضروري اتباع الإجراءات التالية:

استخدام HTTPS

استيثاق كلمة السر Basic Authentication يرسل البيانات على شكل Base64، مما يجعلها عرضة للاعتراض إن لم يكن الاتصال مشفراً. لتأمين الاتصال:

bash
sudo apt install certbot python3-certbot-apache sudo certbot --apache

سيوفر هذا شهادة Let’s Encrypt مجانية ويقوم بإعداد Apache تلقائيًا لاستخدام HTTPS.

حماية ملف .htpasswd

يجب التأكد من أن ملف كلمات المرور غير قابل للوصول عبر الويب:

bash
sudo chown root:www-data /etc/apache2/.htpasswd sudo chmod 640 /etc/apache2/.htpasswd

تجنب تخزين كلمات مرور سهلة

يُنصح باستخدام كلمات مرور طويلة ومعقدة. يمكن توليد كلمات مرور قوية باستخدام أدوات مثل pwgen أو openssl:

bash
openssl rand -base64 12

9. استكشاف الأخطاء الشائعة وحلولها

الخطأ السبب الحل
403 Forbidden عدم توفر الصلاحيات على المجلد تأكد من أن المستخدم www-data يملك صلاحية الوصول
عدم ظهور مطالبة تسجيل الدخول عدم تفعيل mod_auth_basic تأكد من تنفيذ a2enmod auth_basic وإعادة تشغيل الخادوم
رفض المستخدم حتى بعد إدخال كلمة المرور الصحيحة خطأ في ملف .htpasswd أو المسار غير صحيح تحقق من صحة المسار في AuthUserFile

10. الجدول: مقارنة بين أنواع الاستيثاق في Apache

نوع الاستيثاق آلية العمل مستوى الأمان متطلبات
Basic Authentication إرسال بيانات الاعتماد على شكل Base64 منخفض بدون HTTPS، جيد مع HTTPS mod_auth_basic, mod_authn_file
Digest Authentication يستخدم تجزئة (hashing) أعلى من Basic mod_auth_digest
Certificate-based Authentication التحقق من العميل بشهادة رقمية عالٍ جدًا إعدادات SSL و CA
LDAP Authentication التحقق من خلال خادم LDAP حسب التكوين mod_authnz_ldap, خادم LDAP خارجي

المصادر والمراجع: